package main

import "fmt"

func main() {
	//定义一个字符串
	str := "Hello World"

	//在这里先打印一遍str与后面的str打印做对比
	fmt.Println(str)

	//创建一个匿名函数
	foo := func() {
		//匿名函数中访问外部函数变量
		str = "Hello JunkingBoy"
		/*
		   匿名函数中并没有定义 str，str 的定义在匿名函数之前，此时，str 就被引用到了匿名函数中形成了闭包。
		*/
	}

	//调用匿名函数
	foo() //这里调用str的值会被修改
	/*
	   执行闭包，此时 str 发生修改，变为 hello dude。
	*/

	//打印出str
	fmt.Println(str)
}
